home *** CD-ROM | disk | FTP | other *** search
- From: shenson@nyx10.cs.du.edu (Stephen Henson)
- From: Stephen Usher <Stephen.Usher@earth.ox.ac.uk>
- Date: Sat, 22 Jan 94 06:34:39 MST
- Date: Sat, 22 Jan 1994 12:18:59 +0000 (GMT)
- Subject: Forwarded ....
- Subject: Re: Binary config and fork() ...
- Date: Sat, 22 Jan 94 06:34:39 MST
- From: shenson@nyx10.cs.du.edu (Stephen Henson)
- Message-Id: <9401221334.AA08600@nyx10.cs.du.edu>
- X-Disclaimer: Nyx is a public access Unix system run by the University
- of Denver. The University has neither control over nor
- responsibility for the opinions or correct identity of users.
- To: mint@terminator.rs.itd.umich.edu
- Subject: Forwarded ....
-
- id AA25893; Sat, 22 Jan 94 05:17:09 MST
- X-Disclaimer: Nyx is a public access Unix system run by the University
- of Denver. The University has neither control over nor
- responsibility for the opinions or correct identity of users.
- From: Stephen Usher <Stephen.Usher@earth.ox.ac.uk>
- Message-Id: <2264.9401221219@elvis.earth.ox.ac.uk>
- Subject: Re: Binary config and fork() ...
- To: shenson@nyx10.cs.du.edu (Stephen Henson)
- Date: Sat, 22 Jan 1994 12:18:59 +0000 (GMT)
- In-Reply-To: <9401211942.AA05263@nyx10.cs.du.edu> from "Stephen Henson" at Jan 21, 94 12:42:48 pm
- Mime-Version: 1.0
-
- > Yes you can use the symbol table to implement binary configuration,
- >that's what my (unreleased) Minixfs binary config program does. It also why
- >I originally wrote nlist(). I think with arrays you can't really increase
- >their length safely by fiddling with the reloc table (what if the compiler
- >or code uses an offset as an optimisation to acces a later variable?). Anyway
- >I've written a short file which gives the basic idea and I'll send it when
- >I've checked out a couple of sample programs.
- > Re non-blocking fork(). I think this could cause problems. At present
- >(or as far as I can gather without mem protection on my STE) the virtual
- >addresses are always the same as the physical ones. If you change this (and
- >it is compulsory for fork()) then you get DMA problems. E.g. suppose I make
- >a call to Fread. What address should the OS pass down? If the data is to be read
- >directly into the buffer via DMA then you need to pass the physical address, if
- >it goes via a cache you need the virtual address. If the hard disk software
- >uses an internal cache then it's even more fun ...
-
- Hmm... I've never played with DMA myself, but I know the problem you're
- talking about.
-
- Concidering that hard disk software will be run before MiNT starts up it
- will always run in a real address space. All we need to do to stop conflicts
- in the future is to (a) compartmentalise DMA using kernel routines, letting
- the kernel do all the address translations, and possibly remapping pages so
- as to create a contiguous memory block, and (b) add a new memory allocation
- call, say, dmamalloc() which will create a contigous memory region and
- return a physical address. I admit this would break programs which were not
- virtual-memory aware which go straight for the hardware.
-
- The main problem I see is catering for the ST{F,FM,M} series machines, those
- with mere 68000's. The only way I can see a non-blocking fork being
- implemented is via shadowing, as used in Minix.. and does that slow the
- machine down or what?
-
- >Steve.
-
- Steve
-
- --
- ---------------------------------------------------------------------------
- Computer Systems Administrator, Dept. of Earth Sciences, Oxford University.
- E-Mail: steve@uk.ac.ox.earth (JANET) steve@earth.ox.ac.uk (Internet).
- Tel:- Oxford (0865) 282110 (UK) or +44 865 282110 (International).
-